package com.service.gmall.esk.repository;

import com.service.gmall.esk.bean.Person;
import org.springframework.data.elasticsearch.annotations.Query;
import org.springframework.data.elasticsearch.repository.ElasticsearchRepository;
import org.springframework.data.repository.CrudRepository;
import org.springframework.scheduling.annotation.Async;
import org.springframework.stereotype.Repository;

import java.util.List;
import java.util.concurrent.Future;

/**
 * @author alpha
 * @className: PersonReposiroty
 * @date 2022/9/3
 * @Description
 */
@Repository
public interface PersonRepository extends ElasticsearchRepository<Person, Long> {
    //根据地址查询
    List<Person> findAllByAddress(String address);

    //查询年龄小于传入值的
    List<Person> findAllByAgeLessThanEqual(Integer age);

    //查询 年龄 大于 18 且 在北京市的人
    List<Person> findAllByAgeGreaterThanAndAddressLike(Integer age, String address);

    //查询 年龄 大于 18 且 在北京市的人  或  id=3的人
    //有OR以后会有歧义。处理歧义
//    @Async
//    Future<>
    List<Person> findAllByAgeGreaterThanAndAddressLikeOrIdEquals(Integer age, String address, Long id);
    @Query("{\n" +
            "    \"match\": {\n" +
            "      \"address\": \"?0\"\n" +
            "    }\n" +
            "  }")
    List<Person> aaa(String address);
}
